﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Collections;

namespace WebContratos.Bean
{
    public class EnviarEmail
    {
        public string envioEmail_Error(EmailBean emailB)
        {
            //Se establece la cadena de texto con la ubicación del archivo a 
            //adjuntar
            string PathFile = emailB.P_rutaArchivo;// "C:\\Documents and Settings\\Administrador\\Escritorio\\CONTRATOS.docx";

            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();

            //Agrego los destinatarios, pueden ir varios
            msg.To.Add(emailB.P_emailpara);
            msg.To.Add(emailB.P_emailde);

            //Agrego la direccion del que manda el email, puede ser falsa o verdadera, pero si es falsa puede que el servidor de correo lo detecte como spam, tambien depende de las credenciales que se ponen mas abajo
            msg.From = new MailAddress(emailB.P_emailde, emailB.P_NombreUsu, System.Text.Encoding.UTF8);

            //Pongo el asunto
            msg.Subject = emailB.P_asunto;

            //El tipo de codificacion del Asunto 
            msg.SubjectEncoding = System.Text.Encoding.UTF8;

            //Escribo el mensaje Y su codificacion
            msg.Body = emailB.P_detalleEmail;
            msg.BodyEncoding = System.Text.Encoding.UTF8;

            //Especifico si va ha ser interpertado con HTML
            msg.IsBodyHtml = false;

            //Agrego el archivo que puse en la ruta anterior "PathFile", y su tipo.
            //Attachment Data = new Attachment(PathFile, MediaTypeNames.Application.Zip);

            ////Obtengo las propiedades del archivo.
            //ContentDisposition disposition = Data.ContentDisposition;
            //disposition.CreationDate = System.IO.File.GetCreationTime(PathFile);
            //disposition.ModificationDate = System.IO.File.GetLastWriteTime(PathFile);
            //disposition.ReadDate = System.IO.File.GetLastAccessTime(PathFile);
            ////Agrego el archivo al mensaje
            //msg.Attachments.Add(Data);

            //Creo un objeto de tipo cliente de correo (Por donde se enviara el correo)
            SmtpClient client = new SmtpClient();

            //Si no voy a usar credenciales pongo false, Pero la mayoria de servidores exigen las credenciales para evitar el spam
            //client.UseDefaultCredentials = false;

            //Como voy a utilizar credenciales las pongo
            client.Credentials = new System.Net.NetworkCredential(emailB.P_emailde, "12345");
            //Si fuera gmail seria 587 el puerto, si es un servidor outlook casi siempre el puerto 25, yo utilizo un servidor propio de correo
            //client.Port = 587;
            client.Port = 25;

            //identifico el cliente que voy a utilizar
            client.Host = "191.9.202.10";

            //Si fuera a utilizar gmail esto deberia ir en true, esto es un certificado de seguridad
            //client.EnableSsl = true;
            client.EnableSsl = false;


            try
            {
                //Envio el mensaje
                client.Send(msg);
                return "ok";
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                return ex.Message;
            }
        }


        public string envioEmail(EmailBean emailB)
        {
            //Se establece la cadena de texto con la ubicación del archivo a 
            //adjuntar
            string PathFile = emailB.P_rutaArchivo;// "C:\\Documents and Settings\\Administrador\\Escritorio\\CONTRATOS.docx";

            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();

            //Agrego los destinatarios, pueden ir varios
            msg.To.Add(emailB.P_emailpara);
            
            //Agrego la direccion del que manda el email, puede ser falsa o verdadera, pero si es falsa puede que el servidor de correo lo detecte como spam, tambien depende de las credenciales que se ponen mas abajo
            msg.From = new MailAddress("contratos@electricaguayaquil.gob.ec", "Contratos Electrica Guayaquil", System.Text.Encoding.UTF8);

            //Pongo el asunto
            msg.Subject = emailB.P_asunto;

            //El tipo de codificacion del Asunto 
            msg.SubjectEncoding = System.Text.Encoding.UTF8;

            //Escribo el mensaje Y su codificacion
            msg.Body = emailB.P_detalleEmail;
            msg.BodyEncoding = System.Text.Encoding.UTF8;

            //Especifico si va ha ser interpertado con HTML
            msg.IsBodyHtml = false;

            try
            {
                //Agrego el archivo que puse en la ruta anterior "PathFile", y su tipo.
                Attachment Data = new Attachment(PathFile, MediaTypeNames.Application.Zip);

                //Obtengo las propiedades del archivo.
                ContentDisposition disposition = Data.ContentDisposition;
                disposition.CreationDate = System.IO.File.GetCreationTime(PathFile);
                disposition.ModificationDate = System.IO.File.GetLastWriteTime(PathFile);
                disposition.ReadDate = System.IO.File.GetLastAccessTime(PathFile);
                //Agrego el archivo al mensaje
                msg.Attachments.Add(Data);
            }
            catch (Exception e)
            { }
            //Creo un objeto de tipo cliente de correo (Por donde se enviara el correo)
            SmtpClient client = new SmtpClient();

            //Si no voy a usar credenciales pongo false, Pero la mayoria de servidores exigen las credenciales para evitar el spam
            //client.UseDefaultCredentials = false;

            //Como voy a utilizar credenciales las pongo
            client.Credentials = new System.Net.NetworkCredential("contratos@electricaguayaquil.gob.ec", "12345");
            //Si fuera gmail seria 587 el puerto, si es un servidor outlook casi siempre el puerto 25, yo utilizo un servidor propio de correo
            //client.Port = 587;
            client.Port = 25;

            //identifico el cliente que voy a utilizar
            client.Host = "191.9.202.10";

            //Si fuera a utilizar gmail esto deberia ir en true, esto es un certificado de seguridad
            //client.EnableSsl = true;
            client.EnableSsl = false;


            try
            {
                //Envio el mensaje
                client.Send(msg);
                return "ok";
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                return ex.Message;
            }
        }

        public string envioEmailVariosArchivos(EmailBean emailB)
        {
            //Se establece la cadena de texto con la ubicación del archivo a 
            //adjuntar           

            System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();

            //Agrego los destinatarios, pueden ir varios
            msg.To.Add(emailB.P_emailpara);

            //Agrego la direccion del que manda el email, puede ser falsa o verdadera, pero si es falsa puede que el servidor de correo lo detecte como spam, tambien depende de las credenciales que se ponen mas abajo
            msg.From = new MailAddress("contratos@electricaguayaquil.gob.ec", "Contratos Electrica Guayaquil", System.Text.Encoding.UTF8);

            //Pongo el asunto
            msg.Subject = emailB.P_asunto;

            //El tipo de codificacion del Asunto 
            msg.SubjectEncoding = System.Text.Encoding.UTF8;

            //Escribo el mensaje Y su codificacion
            msg.Body = emailB.P_detalleEmail;
            msg.BodyEncoding = System.Text.Encoding.UTF8;

            //Especifico si va ha ser interpertado con HTML
            msg.IsBodyHtml = true;

            ArrayList direcciones = new ArrayList();

            direcciones = emailB.P_rutasArchivos;

            for (int a = 0; a < direcciones.Count; a++)
            {
                string PathFile = Convert.ToString(direcciones[a]);// "C:\\Documents and Settings\\Administrador\\Escritorio\\CONTRATOS.docx";
                //Agrego el archivo que puse en la ruta anterior "PathFile", y su tipo.
                Attachment Data = new Attachment(PathFile, MediaTypeNames.Application.Zip);

                //Obtengo las propiedades del archivo.
                ContentDisposition disposition = Data.ContentDisposition;
                disposition.CreationDate = System.IO.File.GetCreationTime(PathFile);
                disposition.ModificationDate = System.IO.File.GetLastWriteTime(PathFile);
                disposition.ReadDate = System.IO.File.GetLastAccessTime(PathFile);
                //Agrego el archivo al mensaje
                msg.Attachments.Add(Data);
            }
            //Creo un objeto de tipo cliente de correo (Por donde se enviara el correo)
            SmtpClient client = new SmtpClient();

            //Si no voy a usar credenciales pongo false, Pero la mayoria de servidores exigen las credenciales para evitar el spam
            //client.UseDefaultCredentials = false;

            //Como voy a utilizar credenciales las pongo
            client.Credentials = new System.Net.NetworkCredential("contratos@electricaguayaquil.gob.ec", "12345");
            //Si fuera gmail seria 587 el puerto, si es un servidor outlook casi siempre el puerto 25, yo utilizo un servidor propio de correo
            //client.Port = 587;
            client.Port = 25;

            //identifico el cliente que voy a utilizar
            client.Host = "191.9.202.10";

            //Si fuera a utilizar gmail esto deberia ir en true, esto es un certificado de seguridad
            //client.EnableSsl = true;
            client.EnableSsl = false;


            try
            {
                //Envio el mensaje
                client.Send(msg);
                return "ok";
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                return ex.Message;
            }
        }
    }
}
